from abc import ABC, abstractmethod
from typing import List, Union

class BaseEmbedding(ABC):
    """向量化基类"""
    
    @abstractmethod
    def encode(self, texts: Union[str, List[str]], **kwargs) -> Union[List[float], List[List[float]]]:
        """
        将文本编码为向量
        参数:
            texts: 单个文本或文本列表
            **kwargs: 额外参数
        返回:
            文本向量或向量列表
        """
        pass
    
    @property
    @abstractmethod
    def dimension(self) -> int:
        """返回向量维度"""
        pass
